package com.electronic.modules.electronicSealSignature.param;

import com.alibaba.fastjson.JSON;
import com.electronic.domain.CebsSdkProperties;
import com.electronic.valid.BeanValidator;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

@Data
public class StartSignDTO {

    /**
     * 文件类型
     */

    @NotBlank(message = "文件类型不能为空")
    private String awaitingSignatureFileType;
    /**
     * 本地文件地址
     */
    @NotBlank(message = "本地文件地址不能为空")
    private String localFilePath;

    /**
     *文件名称
     */
    @NotBlank(message = "文件名称不能为空")
    private String fileName;

    @NotBlank(message = "签章后文件的保存路径不能为空")
    //签章后文件的保存路径
    private String signatureFileSaveFilePath;

    @NotBlank(message = "签章后文件的保存文件名称不能为空")
    // 签章后文件的保存文件名称
    private String signatureFileSaveFileName;
    /**
     * 签署信息
     */
    @NotNull(message = "签署信息不能为空")
    private CommitSignInfoDTO signatureInfo;

    /**
     * 签署流程标识ID
     */
    private String pid;

    /**
     * 定位模式 1-坐标定位、2-关键字定位
     */
    @NotBlank(message = "定位模式不能为空")
    private String positionType;

    /**
     * 文件id
     */
    private String fileId;

    /**
     * 印章id
     */
    @NotBlank(message = "印章id不能为空")
    private String sealSn;


    /**
     * 二维码唯一标识
     */
    @NotBlank(message = "二维码唯一标识不能为空")
    private String tid;

    /**
     * 印章类型
     */
    @NotBlank(message = "印章类型不能为空")
    private String sealType;

    /**
     * 是否连续签章 00:单次签章 、01：连续签章
     */
    @NotBlank(message = "是否连续签章不能为空")
    private String signContinued;
    /**
     * 用户唯一id
     */
   // private String userTransactionCode;

    /**
     * 印章图片最大值(宽高)
     */
    private float sealImgMaxValue;

    /**
     * 签章关键字
     */
    private String signatureKeyWord;

    @NotNull(message = "初始化CA信息不能为空")
    private CebsSdkProperties cebsSdkProperties;

    public static StartSignDTO validate(String businessData) {
        StartSignDTO dto = JSON.parseObject(businessData, StartSignDTO.class);
        //验证必填项
        BeanValidator.validateReturnException(dto);
        BeanValidator.validateReturnException(dto.getSignatureInfo());
        return dto;
    }
}
